--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
meshchatx/src/backend/mdi_icon_util.py 2603a45cb9b107f2eb9dccabe1531f1c2473eb2c (2603a45c) Text, 709 B
T8b949e# SPDX-License-Identifier: 0BSD
T8b949e"""Validation for Material Design Icons names (kebab-case, LXMF-style)."""
Tff7b72import T7ee787re
Te6edf3MDI_ICON_NAME_RE Tff7b72= Te6edf3reTff7b72.Td2a8ffcompileTb4b4b4(Ta5d6ffrTa5d6ff"Ta5d6ff^[a-z0-9]+(-[a-z0-9]+)*$Ta5d6ff"Tb4b4b4)
Te6edf3MAX_MDI_ICON_NAME_LEN Tff7b72= T79c0ff64
Tff7b72def Td2a8ffnormalize_mdi_icon_nameTb4b4b4(Te6edf3valueTb4b4b4)Tb4b4b4:
T8b949e"""Return a normalized icon name or None when unset/invalid."""
Tff7b72if Te6edf3value Tff7b72is Tff7b72NoneTb4b4b4:
Tff7b72return Tff7b72None
Tff7b72if Tff7b72not Tffa657isinstanceTb4b4b4(Te6edf3valueTb4b4b4, Tffa657strTb4b4b4)Tb4b4b4:
Te6edf3msg Tff7b72= Ta5d6ff"Ta5d6fficon name must be a stringTa5d6ff"
Tff7b72raise Tf85149ValueErrorTb4b4b4(Te6edf3msgTb4b4b4)
Te6edf3trimmed Tff7b72= Te6edf3valueTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)Tff7b72.Td2a8fflowerTb4b4b4(Tb4b4b4)
Tff7b72if Tff7b72not Te6edf3trimmedTb4b4b4:
Tff7b72return Tff7b72None
Tff7b72if Tffa657lenTb4b4b4(Te6edf3trimmedTb4b4b4) Tff7b72> Te6edf3MAX_MDI_ICON_NAME_LEN Tff7b72or Tff7b72not Te6edf3MDI_ICON_NAME_RETff7b72.Td2a8ffmatchTb4b4b4(Te6edf3trimmedTb4b4b4)Tb4b4b4:
Te6edf3msg Tff7b72= Ta5d6ff"Ta5d6ffinvalid MDI icon nameTa5d6ff"
Tff7b72raise Tf85149ValueErrorTb4b4b4(Te6edf3msgTb4b4b4)
Tff7b72return Te6edf3trimmed
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────